package com.pig4cloud.pigx.common.websocket.subscribe.message;


import com.pig4cloud.pigx.common.websocket.subscribe.constants.SubscribeMessageTypeConstants;
import lombok.Data;

import java.util.List;

/**
 * 抽象订阅数据消息 todo 后续迭代
 *
 * @date 2022/8/26 16:47
 */
@Data
public class BaseSubscribeMessage<T> {

	/**
	 * 前端请求时会携带type，根据type进行不同的处理
	 */
	private String type;

	/**
	 * 订阅列表
	 */
	private List<String> streamNameList;

	/**
	 * 数据
	 */
	private T data;

	/**
	 * 是否是订阅
	 *
	 * @return {@link boolean}
	 * @date 2022/8/27 20:22
	 */
	public boolean isSubscribe() {
		return SubscribeMessageTypeConstants.SUBSCRIBE.equals(type);
	}

	/**
	 * 是否是取消订阅
	 *
	 * @return {@link boolean}
	 * @date 2022/8/27 20:22
	 */
	public boolean isUnSubscribe() {
		return SubscribeMessageTypeConstants.UN_SUBSCRIBE.equals(type);
	}

	/**
	 * 是否是已订阅列表
	 *
	 * @return {@link boolean}
	 * @date 2022/8/27 20:22
	 */
	public boolean isSubscribeList() {
		return SubscribeMessageTypeConstants.SUBSCRIBE_LIST.equals(type);
	}

	/**
	 * 是否是设置属性
	 *
	 * @return {@link boolean}
	 * @date 2022/8/27 20:22
	 */
	public boolean isSetProperty() {
		return SubscribeMessageTypeConstants.SET_PROPERTY.equals(type);
	}

	/**
	 * 是否是心跳
	 *
	 * @return {@link boolean}
	 * @date 2022/8/27 20:22
	 */
	public boolean isPing() {
		return SubscribeMessageTypeConstants.PING.equals(type);
	}

	/**
	 * 获得类型
	 *
	 * @return {@link Class<?>}
	 * @date 2022/8/27 21:32
	 */
	public Class<?> getMessageClass() {
		return this.getClass();
	}
}
